package hbt.dao;

import hbt.HibernateUtil;

import java.util.List;

import negocio.Cliente;
import negocio.Cotizacion;
import negocio.OrdenPedido;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import Enum.EEstadoEntidad;
import Enum.EEstadoOP;

public class CotizacionDAO extends HibernateDao<Cliente> {
	protected static HibernateDao instancia = null;

	public static CotizacionDAO getInstancia() {
		if (instancia == null) {
			instancia = new CotizacionDAO();
			sf = HibernateUtil.getSessionFactory();
		}
		return (CotizacionDAO) instancia;
	}


	public List<Cotizacion> findCotizacionesByOdv(Integer odv) {
		Session session = sf.openSession();
		String hql = " select c from " + Cotizacion.class.getName() + " c join c.solicitudCotizacion sc  ";
		hql += " where sc.odv.nroSucursal = :suc and c.nroCotizacion not in " +
				"(select distinct iop.cotizacion from OrdenPedido op join op.itemsOrdenPedido iop)";
		Query query = session.createQuery(hql);

		query.setParameter("suc", odv);
		List<Cotizacion> clientes = query.list();
		session.close();
		return clientes;
	}

}
